﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using AdminCondominio.Negocio;
using AdminCondominio.Dominio;

namespace AdminCondominio.Controllers
{
    public class AreaComunController : Controller
    {
        //
        // GET: /AreaComun/

        AreaComunService AreaComunService;
        TipoAreaComunService TipoAreaComunService;

        public ActionResult Index()
        {
            List<AreaComun> List = AreaComunService.ListarAreaComun();
            return View(List);
        }

        //
        // GET: /AreaComun/Details/5

        public ActionResult Details(int codigo)
        {
            AreaComun AreaComun= new AreaComun();
            AreaComun.CoAreaComun=codigo;
            AreaComun = AreaComunService.OptenerAreaComun(AreaComun);
            return View(AreaComun);
        }

        //
        // GET: /AreaComun/Create

        public ActionResult Create()
        {
            TipoAreaComun TipoAreaComun= new TipoAreaComun();
            TipoAreaComun.DesAreaComun = "";
            List<TipoAreaComun> List = TipoAreaComunService.ListarTipoAreaComun(TipoAreaComun);
            ViewData["List"] = new SelectList(List, "CoTipoAreaComun", "DesAreaComun");
            return View();
        } 

        //
        // POST: /AreaComun/Create

        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                // TODO: Add insert logic here
                if (ModelState.IsValid)
                {
                    AreaComun _AreaComun = new AreaComun();
                    _AreaComun.NuPersonas = int.Parse(collection["NuPersonas"].ToString());
                    _AreaComun.Area = decimal.Parse(collection["Area"].ToString());
                    _AreaComun.Ubicacion = collection["Ubicacion"].ToString();
                    _AreaComun.TipoAreaComun = new TipoAreaComun();
                    _AreaComun.TipoAreaComun.CoTipoAreaComun = int.Parse(collection["Tip_AreaComun"].ToString());
                    _AreaComun.Estado = collection["Estado"].ToString();

                    AreaComunService.RegistrarAreaComun(_AreaComun);
                    return RedirectToAction("Index");
                }
                else {
                    return View();
                }
            }
            catch
            {
                ModelState.AddModelError(string.Empty, "Error al crear el tipo de area comun");
                throw;
            }
        }
        
        //
        // GET: /AreaComun/Edit/5

        public ActionResult Edit(int codigo)
        {
            AreaComun AreaComun = new AreaComun();
            AreaComun.CoAreaComun = codigo;
            AreaComun = AreaComunService.OptenerAreaComun(AreaComun);

            TipoAreaComun TipoAreaComun = new TipoAreaComun();
            TipoAreaComun.DesAreaComun = "";
            List<TipoAreaComun> List = TipoAreaComunService.ListarTipoAreaComun(TipoAreaComun);
            ViewData["List"] = new SelectList(List, "CoTipoAreaComun", "DesAreaComun",AreaComun.TipoAreaComun.CoTipoAreaComun);
            return View(AreaComun);
        }

        //
        // POST: /AreaComun/Edit/5

        [HttpPost]
        public ActionResult Edit(int codigo, FormCollection collection)
        {
            try
            {
                // TODO: Add insert logic here
                if (ModelState.IsValid)
                {
                    AreaComun _AreaComun = new AreaComun();
                    _AreaComun.NuPersonas = int.Parse(collection["NuPersonas"].ToString());
                    _AreaComun.Area = decimal.Parse(collection["Area"].ToString());
                    _AreaComun.Ubicacion = collection["Ubicacion"].ToString();
                    _AreaComun.TipoAreaComun = new TipoAreaComun();
                    _AreaComun.TipoAreaComun.CoTipoAreaComun = int.Parse(collection["Tip_AreaComun"].ToString());
                    _AreaComun.Estado = collection["Estado"].ToString();
                    _AreaComun.CoAreaComun = codigo;
                    AreaComunService.UpdateAreaComun(_AreaComun);
                    return RedirectToAction("Index");
                }
                else
                {
                    return View();
                }
            }
            catch
            {
                ModelState.AddModelError(string.Empty, "Error al crear el tipo de area comun");
                throw;
            }
        }

        //
        // GET: /AreaComun/Delete/5
 
        public ActionResult Delete(int codigo)
        {
            AreaComun AreaComun = new AreaComun();
            AreaComun.CoAreaComun = codigo;
            AreaComun = AreaComunService.OptenerAreaComun(AreaComun);
            return View(AreaComun);
        }

        //
        // POST: /AreaComun/Delete/5

        [HttpPost]
        public ActionResult Delete(int codigo, FormCollection collection)
        {
            try
            {
                // TODO: Add insert logic here
                if (ModelState.IsValid)
                {
                    AreaComun _AreaComun = new AreaComun();
                    _AreaComun.CoAreaComun = codigo;

                    AreaComunService.DelAreaComun(_AreaComun);
                    return RedirectToAction("Index");
                }
                else
                {
                    return View();
                }
            }
            catch
            {
                ModelState.AddModelError(string.Empty, "Error al crear el tipo de area comun");
                throw;
            }
        }
    }
}
